//package com.zlcx.tz.live.service;
//
//import com.aliyun.oss.OSSClient;
//import com.aliyun.oss.model.*;
//import com.google.common.base.Joiner;
//import com.zlcx.tz.live.exception.BusinessException;
//import com.zlcx.tz.live.utils.CalendarUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.collections.CollectionUtils;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.math.BigDecimal;
//import java.util.Date;
//import java.util.List;
//import java.util.UUID;
//import java.util.stream.Collectors;
//
///**
// * <p></p>
// * <PRE>
// * <BR>    修改记录
// * <BR>-----------------------------------------------
// * <BR>    修改日期         修改人          修改内容
// * </PRE>
// *
// * @author zl
// * @version 1.0
// * @date Created in 2019/11/7 20:26
// * @copyright: Copyright (c) founders
// */
//
//@Service
//@Slf4j
//public class AliYunUploadServiceImpl implements UploadService{
//
//
//    @Value("${aliyun.oss.bucketName}")
//    private String ossBucketName;
//
//    @Value("${aliyun.oss.imgdomain}")
//    private String imgDomain;
//
//    @Value("${aliyun.oss.img.maxSize}")
//    private Long uploadImgMaxSize;
//
//    @Value("${aliyun.oss.img.resizePathParam}")
//    private String imgResizePathParam;
//
//    @Autowired
//    private OSSClient ossClient;
//
//    /**
//     * 公共上传
//     * 举例：
//     * modelPath：tongzhuo
//     * subModelPath：jubao
//     */
//    public String uploadOssFile(MultipartFile file, String modelPath, String subModelPath, boolean needResize) {
//
//        if (file == null) {
//            return null;
//        }
//
//        if (StringUtils.isBlank(file.getOriginalFilename())
//                || file.getOriginalFilename().lastIndexOf(".") == -1
//                || file.getOriginalFilename().lastIndexOf(".") == file.getOriginalFilename().length() - 1) {
//
//            throw new BusinessException("未知文件类型");
//        }
//
//        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."), file.getOriginalFilename().length());
//
//        try {
//
//            // 存储路径 格式 /modelPath/subModelPath/yyyy/mmdd/uuid.xxx
//            String uploadRealPathDir = Joiner.on("/").join(modelPath, subModelPath, CalendarUtil.getFormatDateString(new Date(), CalendarUtil.SHORT_DATA_FORMAT_YYYY_MMDD).concat("/"));
//            String localUploadFilePath = uploadRealPathDir + UUID.randomUUID().toString().replaceAll("-", "") + suffix;
//            //上传到ali oss
//            ossClient.putObject(ossBucketName, localUploadFilePath, file.getInputStream());
//            String imgPath = imgDomain + "/" + localUploadFilePath;
//            if (needResize) {
//                try {
//                    Long imageOriginSize = file.getSize();
//                    log.info("imgPath:[{}], imageOriginSize:{}", imgPath, imageOriginSize);
//                    if (uploadImgMaxSize < imageOriginSize) {
//                        log.info("resize to uploadImgMaxSize for {}", imgPath);
//
//                        int intPercent = new BigDecimal(Double.valueOf(uploadImgMaxSize))
//                                .divide(new BigDecimal(Double.valueOf(imageOriginSize)), 2, BigDecimal.ROUND_HALF_UP)
//                                .remainder(BigDecimal.ONE).multiply(new BigDecimal(Double.valueOf(100))).intValue();
//
//                        imgPath = imgPath + "?" + imgResizePathParam + intPercent;
//                    }
//                } catch (Exception e) {
//                    log.error("上传图片Resize报错，{}", e);
//                }
//            }
//            return imgPath;
//
//        } catch (Exception e) {
//            log.error("上传图片报错，{}", e);
//            return null;
//        }
//
//    }
//
//    public void deleteFile(String fileUrl) {
//
//        try {
//
//            if (StringUtils.isBlank(fileUrl)) {
//                return;
//            }
//            fileUrl = fileUrl.replace(imgDomain + "/", "");
//            if (fileUrl.indexOf("?") > 0) {
//                fileUrl = fileUrl.substring(0, fileUrl.indexOf("?") - 1);
//            }
//
//            ossClient.deleteObject(ossBucketName, fileUrl);
//
//        } catch (Exception e) {
//            log.error("删除图片异常，fileUrl={},e={}", fileUrl, e);
//        }
//
//    }
//
//
//    /**
//     * 图片鉴黄
//     *
//     * @param roomId
//     * @param userId
//     * @param file
//     * @return
//     */
//    public String uploadPublishPicCheck(Long roomId, Long userId, MultipartFile file) {
//
//        return uploadOssFile(file, "tongzhuoimagecheck", CalendarUtil.getFormatDateToString(new Date()) + "/" + roomId + "/" + userId, false);
//
//    }
//
//    public void deleteFilesByDayPath(String dayPath) {
//        try {
//
//            if (StringUtils.isBlank(dayPath)) {
//                return;
//            }
//
//            ListObjectsRequest listObjectsRequest =  new ListObjectsRequest(ossBucketName, "tongzhuoimagecheck/" +dayPath+ "/", null, null, 1000);
//            ObjectListing objectListing = null;
//            long n = 0;
//            do {
//
//                objectListing = ossClient.listObjects(listObjectsRequest);
//                if(CollectionUtils.isNotEmpty(objectListing.getObjectSummaries())){
//                    List<String> keys = objectListing.getObjectSummaries().stream()
//                            .map(OSSObjectSummary::getKey).collect(Collectors.toList());
//                    DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(ossBucketName);
//                    deleteObjectsRequest.setKeys(keys);
//                    DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(deleteObjectsRequest);
//                    log.info("批量删除图片 {} 个", deleteObjectsResult.getDeletedObjects().size());
//                    n += deleteObjectsResult.getDeletedObjects().size();
//                }
//
//            }while (CollectionUtils.isNotEmpty(objectListing.getObjectSummaries()) );
//            log.info("总共批量删除图片 {} 个", n);
//        } catch (Exception e) {
//            log.error("批量删除图片异常，dayPath={},e={}", dayPath, e);
//        }
//    }
//
//
//}
